#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

void *thread_func(void *arg){
    printf("子线程开始运行\n");
    //主线程睡眠1s，正常应该在3s子线程以后再回到主线程
    sleep(3);
    printf("子线程结束运行\n");
}

int main(int argc, char const *argv[])
{
    pthread_t pt1;
    printf("主线程开始运行\n");
    pthread_create(&pt1, NULL, thread_func, NULL);
    sleep(1);
    pthread_cancel(pt1);
    void *ret;
    //等待子线程结束
    pthread_join(pt1, &ret);
    //判断子线程是否被取消(join返回函数返回值，被取消回-1)
    if(ret == PTHREAD_CANCELED){
        printf("子线程被取消\n");   
    }
    else{
        printf("子线程正常结束\n");
    }
    printf("主线程结束运行\n");
    
    return 0;
}




